

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/Mine.jpg">
  <link rel="icon" href="/img/Mine.jpg">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="author" content="Chiam">
  <meta name="keywords" content="算法，安全">
  
    <meta name="description" content="『数据库』数据库 SQL 语言从入门到精通-Part 3-SQL 语言基础知识数据库从入门到精通合集（超详细，学习数据库必看） 一、关系 单一的数据结构—-关系现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构—-二维表从用户角度，关系模型中数据的逻辑结构是一张二维表 建立在集合代数的基础上  1.域（Domain）域是一组具有相同数据类型的值的集合。 2.笛卡尔积（Cartesian P">
<meta property="og:type" content="article">
<meta property="og:title" content="『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识">
<meta property="og:url" content="http://example.com/2023/12/06/%E3%80%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%8F%E6%95%B0%E6%8D%AE%E5%BA%93SQL%E8%AF%AD%E8%A8%80%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A-Part%203-SQL%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/index.html">
<meta property="og:site_name" content="Chiam 的个人主页">
<meta property="og:description" content="『数据库』数据库 SQL 语言从入门到精通-Part 3-SQL 语言基础知识数据库从入门到精通合集（超详细，学习数据库必看） 一、关系 单一的数据结构—-关系现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构—-二维表从用户角度，关系模型中数据的逻辑结构是一张二维表 建立在集合代数的基础上  1.域（Domain）域是一组具有相同数据类型的值的集合。 2.笛卡尔积（Cartesian P">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317165649612.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317210049778.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317170004256.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317170503305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317170801731.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317171016189.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/2020031720591413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20200317174019312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70">
<meta property="article:published_time" content="2023-12-05T16:11:43.867Z">
<meta property="article:modified_time" content="2023-12-05T16:18:11.610Z">
<meta property="article:author" content="Chiam">
<meta property="article:tag" content="算法，安全">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://img-blog.csdnimg.cn/20200317165649612.png">
  
  
  
  <title>『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识 - Chiam 的个人主页</title>

  <link  rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" />



  <link  rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" />



<!-- 主题依赖的图标库，不要自行修改 -->
<!-- Do not modify the link that theme dependent icons -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_hj8rtnfg7um.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">


<link  rel="stylesheet" href="/css/main.css" />


  <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" />
  
    <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" />
  



  
<link rel="stylesheet" href="/css/custom.css">



  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    Fluid.ctx = Object.assign({}, Fluid.ctx)
    var CONFIG = {"hostname":"example.com","root":"/","version":"1.9.5-a","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false,"scope":[]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":"❡"},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":2},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"follow_dnt":true,"baidu":null,"google":{"measurement_id":null},"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml","include_content_in_search":true};

    if (CONFIG.web_analytics.follow_dnt) {
      var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
      Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
    }
  </script>
  <script  src="/js/utils.js" ></script>
  <script  src="/js/color-schema.js" ></script>
  


  
<meta name="generator" content="Hexo 6.3.0"></head>


<body>
  

  <header>
    

<div class="header-inner" style="height: 70vh;">
  <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/">
      <strong>Chiam&#39;s Blogs</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                
                <span>首页</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                
                <span>归档</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/categories/">
                
                <span>分类</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                
                <span>关于</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/links/">
                
                <span>友链</span>
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              <i class="iconfont icon-search"></i>
            </a>
          </li>
          
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">
              <i class="iconfont icon-dark" id="color-toggle-icon"></i>
            </a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

  

<div id="banner" class="banner" parallax=true
     style="background: url('/img/default.png') no-repeat center center; background-size: cover;">
  <div class="full-bg-img">
    <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
      <div class="banner-text text-center fade-in-up">
        <div class="h2">
          
            <span id="subtitle" data-typed-text="『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识"></span>
          
        </div>

        
          
  <div class="mt-3">
    
    
      <span class="post-meta">
        <i class="iconfont icon-date-fill" aria-hidden="true"></i>
        <time datetime="2023-12-06 00:11" pubdate>
          2023年12月6日 凌晨
        </time>
      </span>
    
  </div>

  <div class="mt-1">
    
      <span class="post-meta mr-2">
        <i class="iconfont icon-chart"></i>
        
          5.4k 字
        
      </span>
    

    
      <span class="post-meta mr-2">
        <i class="iconfont icon-clock-fill"></i>
        
        
        
          46 分钟
        
      </span>
    

    
    
  </div>


        
      </div>

      
    </div>
  </div>
</div>

</div>

  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="side-col d-none d-lg-block col-lg-2">
      

    </div>

    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div id="board">
          <article class="post-content mx-auto">
            <h1 id="seo-header">『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识</h1>
            
            
              <div class="markdown-body">
                
                <h1 id="『数据库』数据库-SQL-语言从入门到精通-Part-3-SQL-语言基础知识"><a href="#『数据库』数据库-SQL-语言从入门到精通-Part-3-SQL-语言基础知识" class="headerlink" title="『数据库』数据库 SQL 语言从入门到精通-Part 3-SQL 语言基础知识"></a>『数据库』数据库 SQL 语言从入门到精通-Part 3-SQL 语言基础知识</h1><p><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_43627118/article/details/105027257">数据库从入门到精通合集（超详细，学习数据库必看）</a></p>
<h4 id="一、关系"><a href="#一、关系" class="headerlink" title="一、关系"></a>一、关系</h4><ul>
<li>单一的数据结构—-关系<br>现实世界的实体以及实体间的各种联系均用关系来表示</li>
<li>逻辑结构—-二维表<br>从用户角度，关系模型中数据的逻辑结构是一张二维表</li>
<li>建立在集合代数的基础上</li>
</ul>
<h5 id="1-域（Domain）"><a href="#1-域（Domain）" class="headerlink" title="1.域（Domain）"></a>1.域（Domain）</h5><p>域是一组具有相同数据类型的值的集合。</p>
<h5 id="2-笛卡尔积（Cartesian-Product）"><a href="#2-笛卡尔积（Cartesian-Product）" class="headerlink" title="2.笛卡尔积（Cartesian Product）"></a>2.笛卡尔积（Cartesian Product）</h5><p>笛卡尔积在 SQL 中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表，笛卡尔积是关系代数里的一个概念，表示两个表中的每一行数据任意组合。</p>
<p>简单来说就是两个集合相乘的结果，集合 A 和集合 B 中任意两个元素结合在一起，也叫交叉连接。集合 A{a1,a2,a3} 集合 B{b1,b2}，笛卡尔积 A × B &#x3D;{(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}</p>
<ul>
<li>所有域的所有取值的一个组合</li>
<li>不能重复</li>
</ul>
<h6 id="1-元组（Tuple）"><a href="#1-元组（Tuple）" class="headerlink" title="1)元组（Tuple）"></a>1)元组（Tuple）</h6><p>笛卡尔积中每一个元素（d1，d2，…，dn）叫作一个 n 元组（n-tuple）或简称元组(Tuple)</p>
<h6 id="2-分量（Component）"><a href="#2-分量（Component）" class="headerlink" title="2)分量（Component）"></a>2)分量（Component）</h6><p>笛卡尔积元素（d1，d2，…，dn）中的每一个值 di 叫作一个分量</p>
<h6 id="3-基数（Cardinal-number）"><a href="#3-基数（Cardinal-number）" class="headerlink" title="3)基数（Cardinal number）"></a>3)基数（Cardinal number）</h6><p>若 Di（i ＝ 1，2，…，n）为有限集，其基数为 mi（i ＝ 1，2，…，n），则 D1×D2×…×Dn 的基数 M 为：<br><img src="https://img-blog.csdnimg.cn/20200317165649612.png" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<h6 id="4-笛卡尔积的表示方法"><a href="#4-笛卡尔积的表示方法" class="headerlink" title="4)笛卡尔积的表示方法"></a>4)笛卡尔积的表示方法</h6><p>笛卡尔积可表示为一个二维表<br>表中的每行对应一个元组，表中的每列对应一个域</p>
<h5 id="3-关系（Relation）"><a href="#3-关系（Relation）" class="headerlink" title="3.关系（Relation）"></a>3.关系（Relation）</h5><h6 id="1-关系"><a href="#1-关系" class="headerlink" title="1)关系"></a>1)关系</h6><p>D1×D2×…×Dn 的子集叫作在域 D1，D2，…，Dn 上的<br>关系，表示为 R（D1，D2，…，Dn）<br>R：关系名<br>n：关系的目或度（Degree）</p>
<h6 id="2-元组"><a href="#2-元组" class="headerlink" title="2)元组"></a>2)元组</h6><p>关系中的每个元素是关系中的元组，通常用 t 表示。</p>
<h6 id="3-单元关系与二元关系"><a href="#3-单元关系与二元关系" class="headerlink" title="3) 单元关系与二元关系"></a>3) 单元关系与二元关系</h6><p>当 n&#x3D;1 时，称该关系为单元关系（Unary relation）或一元关系<br>当 n&#x3D;2 时，称该关系为二元关系（Binary relation）</p>
<h6 id="4-关系的表示"><a href="#4-关系的表示" class="headerlink" title="4) 关系的表示"></a>4) 关系的表示</h6><p>关系也是一个二维表，表的每行对应一个元组，表的每列对应一个域</p>
<h6 id="5-属性"><a href="#5-属性" class="headerlink" title="5)属性"></a>5)属性</h6><p>关系中不同列可以对应相同的域<br>为了加以区分，必须对每列起一个名字，称为属性（Attribute）<br>n 目关系必有 n 个属性</p>
<h6 id="6-码"><a href="#6-码" class="headerlink" title="6) 码"></a>6) 码</h6><p><strong>候选码（Candidate key）</strong><br>若关系中的某一属性组的值能唯一地标识一个元组，则称该属性组为候选码<br>简单的情况：候选码只包含一个属性<br><strong>全码（All-key）</strong><br>最极端的情况：关系模式的所有属性组是这个关系模式的候选码，称为全码（All-key）<br><strong>主码</strong><br>若一个关系有多个候选码，则选定其中一个为主码（Primary key）<br><strong>主属性</strong><br>候选码的诸属性称为主属性（Prime attribute）<br>不包含在任何侯选码中的属性称为非主属性（ Non-Prime attribute）或非码属性（Non-key attribute）</p>
<h6 id="7-三类关系"><a href="#7-三类关系" class="headerlink" title="7) 三类关系"></a>7) 三类关系</h6><p><strong>基本关系（基本表或基表）</strong><br>实际存在的表，是实际存储数据的逻辑表示<br><strong>查询表</strong><br>查询结果对应的表<br><strong>视图表</strong><br>由基本表或其他视图表导出的表，是虚表，不对<br>应实际存储的数据</p>
<h6 id="8-基本关系的性质"><a href="#8-基本关系的性质" class="headerlink" title="8)基本关系的性质"></a>8)基本关系的性质</h6><p>① 列是同质的（Homogeneous）<br>② 不同的列可出自同一个域：其中的每一列称为一个属性；不同的属性要给予不同的属性名<br>③ 列的顺序无所谓,，列的次序可以任意交换<br>④ 任意两个元组的候选码不能相同<br>⑤ 行的顺序无所谓，行的次序可以任意交换<br>⑥ 分量必须取原子值<br><img src="https://img-blog.csdnimg.cn/20200317210049778.png" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<h4 id="二、关系模式"><a href="#二、关系模式" class="headerlink" title="二、关系模式"></a>二、关系模式</h4><h5 id="1．什么是关系模式"><a href="#1．什么是关系模式" class="headerlink" title="1．什么是关系模式"></a>1．什么是关系模式</h5><ul>
<li>关系模式（Relation Schema）是型</li>
<li>关系是值</li>
<li>关系模式是对关系的描述<br>元组集合的结构：属性构成、属性来自的域、属性与域之间的映象关系<br>元组语义以及完整性约束条件<br>属性间的数据依赖关系集合</li>
</ul>
<h5 id="2．定义关系模式"><a href="#2．定义关系模式" class="headerlink" title="2．定义关系模式"></a>2．定义关系模式</h5><p><strong>R（U，D，DOM，F)</strong><br>R——关系名<br>U——组成该关系的属性名集合<br>D——属性组 U 中属性所来自的域<br>DOM——属性向域的映象集合<br>F——属性间的数据依赖关系集合</p>
<p>关系模式通常可以简记为<br><strong>R (U)或 R (A1，A2，…，An)</strong><br>R: 关系名<br>A1，A2，…，An : 属性名<br><strong>ps：域名及属性向域的映象常常直接说明为属性的类型、长度</strong></p>
<h5 id="3-关系模式与关系"><a href="#3-关系模式与关系" class="headerlink" title="3.关系模式与关系"></a>3.关系模式与关系</h5><h6 id="1）关系模式"><a href="#1）关系模式" class="headerlink" title="1）关系模式"></a>1）关系模式</h6><p>对关系的描述<br>静态的、稳定的</p>
<h6 id="2）关系"><a href="#2）关系" class="headerlink" title="2）关系"></a>2）关系</h6><p>关系模式在某一时刻的状态或内容<br>动态的、随时间不断变化的</p>
<h6 id="3）关系模式和关系往往统称为关系"><a href="#3）关系模式和关系往往统称为关系" class="headerlink" title="3）关系模式和关系往往统称为关系"></a>3）关系模式和关系往往统称为关系</h6><h4 id="三、关系数据库"><a href="#三、关系数据库" class="headerlink" title="三、关系数据库"></a>三、关系数据库</h4><h5 id="1-关系数据库"><a href="#1-关系数据库" class="headerlink" title="1.关系数据库"></a>1.关系数据库</h5><p>在一个给定的应用领域中，所有关系的集合构成一个关系数据库</p>
<h5 id="2-关系数据库的型与值"><a href="#2-关系数据库的型与值" class="headerlink" title="2.关系数据库的型与值"></a>2.关系数据库的型与值</h5><h6 id="1-关系数据库的型-关系数据库模式对关系数据库的描述。"><a href="#1-关系数据库的型-关系数据库模式对关系数据库的描述。" class="headerlink" title="1)关系数据库的型: 关系数据库模式对关系数据库的描述。"></a>1)关系数据库的型: 关系数据库模式对关系数据库的描述。</h6><h6 id="2-关系数据库模式包括"><a href="#2-关系数据库模式包括" class="headerlink" title="2)关系数据库模式包括"></a>2)关系数据库模式包括</h6><p>若干域的定义<br>在这些域上定义的若干关系模式</p>
<h6 id="3-关系数据库的值-关系模式在某一时刻对应的关系的集合，简称为关系数据库"><a href="#3-关系数据库的值-关系模式在某一时刻对应的关系的集合，简称为关系数据库" class="headerlink" title="3)关系数据库的值: 关系模式在某一时刻对应的关系的集合，简称为关系数据库"></a>3)关系数据库的值: 关系模式在某一时刻对应的关系的集合，简称为关系数据库</h6><h4 id="四、关系操作"><a href="#四、关系操作" class="headerlink" title="四、关系操作"></a>四、关系操作</h4><h5 id="1-基本关系操作"><a href="#1-基本关系操作" class="headerlink" title="1. 基本关系操作"></a>1. 基本关系操作</h5><h6 id="1）-常用的关系操作"><a href="#1）-常用的关系操作" class="headerlink" title="1）.常用的关系操作"></a>1）.常用的关系操作</h6><p>查询：选择、投影、连接、除、并、交、差<br>数据更新：插入、删除、修改<br>查询的表达能力是其中最主要的部分<br>选择、投影、并、差、笛卡尔基是 5 种基本操作</p>
<h6 id="2）-关系操作的特点"><a href="#2）-关系操作的特点" class="headerlink" title="2）.关系操作的特点"></a>2）.关系操作的特点</h6><p>集合操作方式：操作的对象和结果都是集合，一次一集合的方式</p>
<h5 id="2-关系数据库语言的分类"><a href="#2-关系数据库语言的分类" class="headerlink" title="2.关系数据库语言的分类"></a>2.关系数据库语言的分类</h5><h6 id="1）-关系代数语言"><a href="#1）-关系代数语言" class="headerlink" title="1）.关系代数语言"></a>1）.关系代数语言</h6><p>用对关系的运算来表达查询要求<br>代表：ISBL</p>
<h6 id="2）-关系演算语言："><a href="#2）-关系演算语言：" class="headerlink" title="2）.关系演算语言："></a>2）.关系演算语言：</h6><p>用谓词来表达查询要求元组关系演算语言<br>谓词变元的基本对象是元组变量<br>代表：APLHA, QUEL<br>域关系演算语言<br>谓词变元的基本对象是域变量<br>代表：QBE</p>
<h6 id="3）-具有关系代数和关系演算双重特点的语言"><a href="#3）-具有关系代数和关系演算双重特点的语言" class="headerlink" title="3）.具有关系代数和关系演算双重特点的语言"></a>3）.具有关系代数和关系演算双重特点的语言</h6><p>代表：SQL（Structured Query Language）</p>
<h4 id="五、关系的完整性"><a href="#五、关系的完整性" class="headerlink" title="五、关系的完整性"></a>五、关系的完整性</h4><h5 id="1-关系的三类完整性约束"><a href="#1-关系的三类完整性约束" class="headerlink" title="1.关系的三类完整性约束"></a>1.关系的三类完整性约束</h5><h6 id="1）实体完整性和参照完整性："><a href="#1）实体完整性和参照完整性：" class="headerlink" title="1）实体完整性和参照完整性："></a>1）实体完整性和参照完整性：</h6><p>关系模型必须满足的完整性约束条件称为关系的两个不变性，应该由关系系统自动支持</p>
<h6 id="2）用户定义的完整性："><a href="#2）用户定义的完整性：" class="headerlink" title="2）用户定义的完整性："></a>2）用户定义的完整性：</h6><p>应用领域需要遵循的约束条件，体现了具体领域中的语义约束</p>
<h5 id="2-实体完整性"><a href="#2-实体完整性" class="headerlink" title="2.实体完整性"></a>2.实体完整性</h5><h5 id="1-实体完整性规则（Entity-Integrity）"><a href="#1-实体完整性规则（Entity-Integrity）" class="headerlink" title="1) 实体完整性规则（Entity Integrity）"></a>1) 实体完整性规则（Entity Integrity）</h5><p>若属性 A 是基本关系 R 的主属性，则属性 A 不能取空值</p>
<ul>
<li>(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。</li>
<li>(2) 现实世界中的实体是可区分的，即它们具有某种唯一性标识。</li>
<li>(3) 关系模型中以主码作为唯一性标识。</li>
<li>(4) 主码中的属性即主属性不能取空值。</li>
</ul>
<h5 id="3-参照完整性"><a href="#3-参照完整性" class="headerlink" title="3.参照完整性"></a>3.参照完整性</h5><h6 id="1-关系间的引用"><a href="#1-关系间的引用" class="headerlink" title="1) 关系间的引用"></a>1) 关系间的引用</h6><p>在关系模型中实体及实体间的联系都是用关系来描述的，因此可能存在着关系与关系间的引用。</p>
<h6 id="2-外码"><a href="#2-外码" class="headerlink" title="2) 外码"></a>2) 外码</h6><ul>
<li>(1）设 F 是基本关系 R 的一个或一组属性，但不是关系 R 的码。如果 F 与基本关系 S 的主码 Ks 相对应，则称 F 是基本关系 R 的外码</li>
<li>(2）基本关系 R 称为参照关系（Referencing Relation）</li>
<li>(3）基本关系 S 称为被参照关系（Referenced Relation） 或 目标关系（Target Relation）</li>
</ul>
<h6 id="3-参照完整性规则"><a href="#3-参照完整性规则" class="headerlink" title="3). 参照完整性规则"></a>3). 参照完整性规则</h6><p>若属性（或属性组）F 是基本关系 R 的外码它与基本关系 S 的主码 Ks 相对应（基本关系 R 和 S 不一定是不同的关系），则对于 R 中每个元组在 F 上的值必须为：<br>或者取空值（F 的每个属性值均为空值）<br>或者等于 S 中某个元组的主码值</p>
<h6 id="4-用户定义的完整性"><a href="#4-用户定义的完整性" class="headerlink" title="4) 用户定义的完整性"></a>4) 用户定义的完整性</h6><ul>
<li>(1）针对某一具体关系数据库的约束条件，反映某一具体应用所涉及的数据必须满足的语义要求</li>
<li>(2）关系模型应提供定义和检验这类完整性的机制，以便用统一的系统的方法处理它们，而不要由应用程序承担这一功能</li>
</ul>
<h4 id="六、关系代数"><a href="#六、关系代数" class="headerlink" title="六、关系代数"></a>六、关系代数</h4><h5 id="1-概述"><a href="#1-概述" class="headerlink" title="1.概述"></a>1.概述</h5><table>
<thead>
<tr>
<th>集合运算符</th>
<th>含义</th>
</tr>
</thead>
<tbody><tr>
<td>∪</td>
<td>并</td>
</tr>
<tr>
<td>∩</td>
<td>交</td>
</tr>
<tr>
<td>-</td>
<td>差</td>
</tr>
<tr>
<td>×</td>
<td>笛卡儿积</td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th>比较运算符</th>
<th>含义</th>
</tr>
</thead>
<tbody><tr>
<td>＞</td>
<td>大于</td>
</tr>
<tr>
<td>≥</td>
<td>大于等于</td>
</tr>
<tr>
<td>＜</td>
<td>小于</td>
</tr>
<tr>
<td>≤</td>
<td>小于等于</td>
</tr>
<tr>
<td>＝</td>
<td>等于</td>
</tr>
<tr>
<td>&lt;&gt; !&#x3D;</td>
<td>不等于</td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th>专门的关系运算符</th>
<th>含义</th>
</tr>
</thead>
<tbody><tr>
<td>$\sigma$</td>
<td>选择</td>
</tr>
<tr>
<td>$\pi$</td>
<td>投影</td>
</tr>
<tr>
<td>$\bowtie$</td>
<td>连接</td>
</tr>
<tr>
<td>÷</td>
<td>除</td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th>逻辑运算符</th>
<th>含义</th>
</tr>
</thead>
<tbody><tr>
<td>┐</td>
<td>非</td>
</tr>
<tr>
<td>$\wedge$</td>
<td>与</td>
</tr>
<tr>
<td>$\vee$</td>
<td>或</td>
</tr>
</tbody></table>
<h5 id="2-传统的集合运算"><a href="#2-传统的集合运算" class="headerlink" title="2.传统的集合运算"></a>2.传统的集合运算</h5><p>具有相同的目 n（即两个关系都有 n 个属性）相应的属性取自同一个域</p>
<h6 id="1）R∪S"><a href="#1）R∪S" class="headerlink" title="1）R∪S"></a>1）R∪S</h6><p>仍为 n 目关系，由属于 R 或属于 S 的元组组成<br>R∪S &#x3D;{t|t∈R∨t ∈S}</p>
<h6 id="2）R-S"><a href="#2）R-S" class="headerlink" title="2）R - S"></a>2）R - S</h6><p>仍为 n 目关系，由属于 R 而不属于 S 的所有元组组成<br>R -S &#x3D; { t|t∈R∧t∉S }</p>
<h6 id="3）R∩S"><a href="#3）R∩S" class="headerlink" title="3）R∩S"></a>3）R∩S</h6><p>仍为 n 目关系，由既属于 R 又属于 S 的元组组成<br>R∩S &#x3D; { t|t∈R∧t ∈S }，R∩S &#x3D; R –(R-S)</p>
<h6 id="4）R×S"><a href="#4）R×S" class="headerlink" title="4）R×S"></a>4）R×S</h6><p>列：（n+m）列元组的集合<br>元组的前 n 列是关系 R 的一个元组<br>后 m 列是关系 S 的一个元组<br>行：k1×k2 个元组<br>R×S &#x3D; {t_r⌒t_s |t_r∈R ∧ t_s∈S }</p>
<h5 id="3-关系运算"><a href="#3-关系运算" class="headerlink" title="3.关系运算"></a>3.关系运算</h5><p>几个重要记号<br><img src="https://img-blog.csdnimg.cn/20200317170004256.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<h6 id="1）专门的关系运算"><a href="#1）专门的关系运算" class="headerlink" title="1）专门的关系运算"></a>1）专门的关系运算</h6><p><strong>1、选择（selection）：</strong></p>
<p>选择运算是单目运算，它从一个关系 R 中选择出满足给定条件的所有元组，并同 R 具有相同的结构。<br>关系 R 的选择运算是从关系 R 中选择满足指定条件（用 F 表示）的元组构成的新关系.换言之,选择运算的结果是一个表的水平方向的子集，是从行的角度进行的运算。<br>关系 R 的选择运算记为：σF（R）&#x3D;{t|t∈R∧F(t)&#x3D; ‘真’}。<br>F：选择条件，是一个逻辑表达式，基本形式为： $X_1θY_1$<br><img src="https://img-blog.csdnimg.cn/20200317170503305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<p><strong>2、投影（projection）：</strong></p>
<p>投影运算也是单目运算，它从一个关系 R 所有属性中选择某些指定属性，组成一个新的关系。选择运算选取关系的某些行，而投影运算选取关系的某些列，是从一个关系出发构造其垂直子集的运算。<br>投影操作主要是从列的角度进行运算，但投影之后不仅取消可原关系中的某些列，而且还可能取消某些元组（避免重复行）<br><img src="https://img-blog.csdnimg.cn/20200317170801731.png" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<p><strong>3、连接（join）：</strong></p>
<p>连接运算是关系的二目运算.关系 R 与关系 S 的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件（称为连接条件,记为 AθB）的元组形成一个新关系。<br><img src="https://img-blog.csdnimg.cn/20200317171016189.png" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"><br><strong>① 等值连接</strong></p>
<p>等值连接是从关系 R 与 S 的广义笛卡尔积中选取 A、B 属性相等的那些元组，按照属性相同的行将两（或以上）张表元组匹配连接；<br><strong>举个例子</strong><br>ID_Name 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
</tr>
</tbody></table>
<p>ID_MingZhu 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>水浒传</td>
</tr>
</tbody></table>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> ID_Name N，ID_MingZhu M <span class="hljs-keyword">WHERE</span> N.ID<span class="hljs-operator">=</span>M.ID;<br></code></pre></td></tr></table></figure>

<table>
<thead>
<tr>
<th>ID_Name.ID</th>
<th>Name</th>
<th>ID_MingZhu.ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>猪八戒</td>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
<td>8</td>
<td>水浒传</td>
</tr>
</tbody></table>
<p><strong>② 自然连接</strong></p>
<p>自然连接是特殊的等值连接，要求两个关系中进行比较的分量必须是同名的属性组，并且在结果中把重复的属性列去掉。</p>
<p><strong>举个例子：</strong><br>ID_Name 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
</tr>
</tbody></table>
<p>ID_MingZhu 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>水浒传</td>
</tr>
</tbody></table>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> ID_Name N <span class="hljs-keyword">natural</span> <span class="hljs-keyword">join</span> ID_MingZhu M <span class="hljs-keyword">ON</span> N.ID<span class="hljs-operator">=</span>M.ID;<br></code></pre></td></tr></table></figure>

<table>
<thead>
<tr>
<th>ID_Name.ID</th>
<th>Name</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>猪八戒</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
<td>水浒传</td>
</tr>
</tbody></table>
<p><strong>③ 左外连接</strong><br>将返回右表的所有行。如果左表的某行在右表中没有匹配行，则将为右表返回空值左连接：<br><strong>例子：</strong><br>ID_Name 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
</tr>
</tbody></table>
<p>ID_MingZhu 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>水浒传</td>
</tr>
<tr>
<td>9</td>
<td>红楼梦</td>
</tr>
</tbody></table>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> ID_Name N <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> ID_MingZhu M <span class="hljs-keyword">ON</span> N.ID<span class="hljs-operator">=</span>M.ID;<br></code></pre></td></tr></table></figure>

<table>
<thead>
<tr>
<th>ID_Name.ID</th>
<th>Name</th>
<th>ID_MingZhu.ID</th>
<th>MingZhuNu</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
<td>NULL</td>
<td>NULL</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
<td>NULL</td>
<td>NULL</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
<td>8</td>
<td>水浒传</td>
</tr>
</tbody></table>
<p><strong>④ 右外连接</strong><br>将返回右表的所有行。如果右表的某行在左表中没有匹配行，则将为左表返回空值;<br><strong>例子</strong></p>
<p>ID_Name 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
</tr>
</tbody></table>
<p>ID_MingZhu 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>水浒传</td>
</tr>
<tr>
<td>9</td>
<td>红楼梦</td>
</tr>
</tbody></table>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> ID_Name N <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> ID_MingZhu M <span class="hljs-keyword">ON</span> N.ID<span class="hljs-operator">=</span>M.ID;<br></code></pre></td></tr></table></figure>

<table>
<thead>
<tr>
<th>ID_Name.ID</th>
<th>Name</th>
<th>ID_MingZhu.ID</th>
<th>MingZhuNu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>猪八戒</td>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
<td>8</td>
<td>水浒传</td>
</tr>
<tr>
<td>NULL</td>
<td>NULL</td>
<td>9</td>
<td>红楼梦</td>
</tr>
</tbody></table>
<ul>
<li>全外连接。<br>左表和右表都不做限制，所有的记录都显示，两表不足的地方用 null 填充</li>
</ul>
<p><strong>例子</strong><br>ID_Name 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
</tr>
</tbody></table>
<p>ID_MingZhu 表</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>MingZhu</th>
</tr>
</thead>
<tbody><tr>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>水浒传</td>
</tr>
<tr>
<td>9</td>
<td>红楼梦</td>
</tr>
</tbody></table>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> ID_Name N <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> ID_MingZhu M <span class="hljs-keyword">ON</span> N.ID<span class="hljs-operator">=</span>M.ID;<br></code></pre></td></tr></table></figure>

<table>
<thead>
<tr>
<th>ID_Name.ID</th>
<th>Name</th>
<th>ID_MingZhu.ID</th>
<th>MingZhuNu</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>大好人</td>
<td>NULL</td>
<td>NULL</td>
</tr>
<tr>
<td>2</td>
<td>大坏蛋</td>
<td>NULL</td>
<td>NULL</td>
</tr>
<tr>
<td>3</td>
<td>猪八戒</td>
<td>3</td>
<td>西游记</td>
</tr>
<tr>
<td>4</td>
<td>孙悟空</td>
<td>4</td>
<td>西游记</td>
</tr>
<tr>
<td>5</td>
<td>沙和尚</td>
<td>5</td>
<td>西游记</td>
</tr>
<tr>
<td>7</td>
<td>唐三藏</td>
<td>7</td>
<td>西游记</td>
</tr>
<tr>
<td>8</td>
<td>武松</td>
<td>8</td>
<td>水浒传</td>
</tr>
<tr>
<td>NULL</td>
<td>NULL</td>
<td>9</td>
<td>红楼梦</td>
</tr>
</tbody></table>
<p><strong>4、除</strong></p>
<p>给定关系 R (X，Y) 和 S (Y，Z)，其中 X，Y，Z 为属性组。<br>R 中的 Y 与 S 中的 Y 可以有不同的属性名，但必须出自相同的域集。<br>R 与 S 的除运算得到一个新的关系 P(X)，<br>P 是 R 中满足下列条件的元组在 X 属性列上的投影：<br>元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合，记作：<br>R÷S &#x3D; {t_r [X] | t_r ∈ R∧πY (S) ⊆ Y_x }<br>Y_x：x 在 R 中的象集，x &#x3D; tr[X]</p>
<p>除操作是同时从行和列角度进行运算<br><strong>例子：</strong><br><img src="https://img-blog.csdnimg.cn/2020031720591413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"><img src="https://img-blog.csdnimg.cn/20200317174019312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYyNzExOA==,size_16,color_FFFFFF,t_70" srcset="/img/loading.gif" lazyload alt="在这里插入图片描述"></p>
<p>这里还有数据库相关的优质文章：<a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_43627118/category_9800862.html">快戳我，快戳我 😳</a></p>

                
              </div>
            
            <hr/>
            <div>
              <div class="post-metas my-3">
  
    <div class="post-meta mr-3 d-flex align-items-center">
      <i class="iconfont icon-category"></i>
      

<span class="category-chains">
  
  
    
      <span class="category-chain">
        
  <a href="/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/" class="category-chain-item">数据库</a>
  
  

      </span>
    
  
</span>

    </div>
  
  
</div>


              
  

  <div class="license-box my-3">
    <div class="license-title">
      <div>『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识</div>
      <div>http://example.com/2023/12/06/『数据库』数据库SQL语言从入门到精通-Part 3-SQL语言基础知识/</div>
    </div>
    <div class="license-meta">
      
        <div class="license-meta-item">
          <div>作者</div>
          <div>Chiam</div>
        </div>
      
      
        <div class="license-meta-item license-meta-date">
          <div>发布于</div>
          <div>2023年12月6日</div>
        </div>
      
      
      
        <div class="license-meta-item">
          <div>许可协议</div>
          <div>
            
              
              
                <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by/4.0/">
                  <span class="hint--top hint--rounded" aria-label="BY - 署名">
                    <i class="iconfont icon-by"></i>
                  </span>
                </a>
              
            
          </div>
        </div>
      
    </div>
    <div class="license-icon iconfont"></div>
  </div>



              
                <div class="post-prevnext my-3">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/2023/12/06/%E3%80%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%8F%E6%95%B0%E6%8D%AE%E5%BA%93SQL%E8%AF%AD%E8%A8%80%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A-Part%204-SQL%E8%AF%AD%E8%A8%80%E4%B8%AD%E7%9A%84%E6%A8%A1%E5%BC%8F%E3%80%81%E5%9F%BA%E6%9C%AC%E8%A1%A8%E3%80%81%E8%A7%86%E5%9B%BE/" title="『数据库』数据库SQL语言从入门到精通-Part 4-SQL语言中的模式、基本表、视图">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">『数据库』数据库SQL语言从入门到精通-Part 4-SQL语言中的模式、基本表、视图</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/2023/12/06/%E3%80%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%8F%E6%95%B0%E6%8D%AE%E5%BA%93SQL%E8%AF%AD%E8%A8%80%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A-Part%202-MySQL%E5%AE%89%E8%A3%85/" title="『数据库』数据库SQL语言从入门到精通-Part 2-MySQL安装">
                        <span class="hidden-mobile">『数据库』数据库SQL语言从入门到精通-Part 2-MySQL安装</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
  
  
    <article id="comments" lazyload>
      
  <div id="valine"></div>
  <script type="text/javascript">
    Fluid.utils.loadComments('#valine', function() {
      Fluid.utils.createScript('https://lib.baomitu.com/valine/1.5.1/Valine.min.js', function() {
        var options = Object.assign(
          {"appId":"fIfc7WqUDZohlQuPc2lz5mJy-MdYXbMMI","appKey":"zjlAG3ZA3o4cBHVAkjzc2Z20","path":"window.location.pathname","placeholder":"留言仅限讨论，禁止广告等行为","avatar":"retro","meta":["nick","mail","link"],"requiredFields":[],"pageSize":10,"lang":"zh-CN","highlight":false,"recordIP":false,"serverURLs":"https://fifc7wqu.api.lncldglobal.com","emojiCDN":null,"emojiMaps":null,"enableQQ":false},
          {
            el: "#valine",
            path: window.location.pathname
          }
        )
        new Valine(options);
        Fluid.utils.waitElementVisible('#valine .vcontent', () => {
          var imgSelector = '#valine .vcontent img:not(.vemoji)';
          Fluid.plugins.imageCaption(imgSelector);
          Fluid.plugins.fancyBox(imgSelector);
        })
      });
    });
  </script>
  <noscript>Please enable JavaScript to view the comments</noscript>


    </article>
  


          </article>
        </div>
      </div>
    </div>

    <div class="side-col d-none d-lg-block col-lg-2">
      
  <aside class="sidebar" style="margin-left: -1rem">
    <div id="toc">
  <p class="toc-header">
    <i class="iconfont icon-list"></i>
    <span>目录</span>
  </p>
  <div class="toc-body" id="toc-body"></div>
</div>



  </aside>


    </div>
  </div>
</div>





  



  



  



  



  







    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v" for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>

    

    
  </main>

  <footer>
    <div class="footer-inner">
  
    <div class="footer-content">
       <meta name="referrer" content="no-referrer" /> <footer id="footer" role="contentinfo"> <div class="divider"> <div class="wall"></div> <img class="animals" src="/img/footer_animals_new.png" srcset="/img/loading.gif" lazyload alt="Footer Animals"> </div> <div class="container" data-index="450"> <p> <a href="https://chiamzhang.github.io" target="_blank">DogEgg</a> <i class="iconfont icon-love"></i> <a href="#" target="_blank">LittePig</a> </p> <p> Powered by  <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-pen"></i> Theme  <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> </p> </div> </footer> 
    </div>
  
  
  
  
</div>

  </footer>

  <!-- Scripts -->
  
  <script  src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://lib.baomitu.com/jquery/3.6.4/jquery.min.js" ></script>
<script  src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script>
<script  src="/js/events.js" ></script>
<script  src="/js/plugins.js" ></script>


  <script  src="https://lib.baomitu.com/typed.js/2.0.12/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var subtitle = document.getElementById('subtitle');
      if (!subtitle || !typing) {
        return;
      }
      var text = subtitle.getAttribute('data-typed-text');
      
        typing(text);
      
    })(window, document);
  </script>




  
    <script  src="/js/img-lazyload.js" ></script>
  




  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.20.1/tocbot.min.js', function() {
    var toc = jQuery('#toc');
    if (toc.length === 0 || !window.tocbot) { return; }
    var boardCtn = jQuery('#board-ctn');
    var boardTop = boardCtn.offset().top;

    window.tocbot.init(Object.assign({
      tocSelector     : '#toc-body',
      contentSelector : '.markdown-body',
      linkClass       : 'tocbot-link',
      activeLinkClass : 'tocbot-active-link',
      listClass       : 'tocbot-list',
      isCollapsedClass: 'tocbot-is-collapsed',
      collapsibleClass: 'tocbot-is-collapsible',
      scrollSmooth    : true,
      includeTitleTags: true,
      headingsOffset  : -boardTop,
    }, CONFIG.toc));
    if (toc.find('.toc-list-item').length > 0) {
      toc.css('visibility', 'visible');
    }

    Fluid.events.registerRefreshCallback(function() {
      if ('tocbot' in window) {
        tocbot.refresh();
        var toc = jQuery('#toc');
        if (toc.length === 0 || !tocbot) {
          return;
        }
        if (toc.find('.toc-list-item').length > 0) {
          toc.css('visibility', 'visible');
        }
      }
    });
  });
</script>


  <script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>

  <script>Fluid.plugins.codeWidget();</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/4.3.1/anchor.min.js', function() {
    window.anchors.options = {
      placement: CONFIG.anchorjs.placement,
      visible  : CONFIG.anchorjs.visible
    };
    if (CONFIG.anchorjs.icon) {
      window.anchors.options.icon = CONFIG.anchorjs.icon;
    }
    var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
    var res = [];
    for (var item of el) {
      res.push('.markdown-body > ' + item.trim());
    }
    if (CONFIG.anchorjs.placement === 'left') {
      window.anchors.options.class = 'anchorjs-link-left';
    }
    window.anchors.add(res.join(', '));

    Fluid.events.registerRefreshCallback(function() {
      if ('anchors' in window) {
        anchors.removeAll();
        var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
        var res = [];
        for (var item of el) {
          res.push('.markdown-body > ' + item.trim());
        }
        if (CONFIG.anchorjs.placement === 'left') {
          anchors.options.class = 'anchorjs-link-left';
        }
        anchors.add(res.join(', '));
      }
    });
  });
</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() {
    Fluid.plugins.fancyBox();
  });
</script>


  <script>Fluid.plugins.imageCaption();</script>

  <script  src="/js/local-search.js" ></script>




  
<script src="/js/love.js"></script>
<script src="/js/funnyTitle.js"></script>
<script src="/js/backTop.js"></script>
<script src="//cdn.jsdelivr.net/gh/bynotes/texiao/source/js/xiaoxuehua.js"></script>



<!-- 主题的启动项，将它保持在最底部 -->
<!-- the boot of the theme, keep it at the bottom -->
<script  src="/js/boot.js" ></script>


  

  <noscript>
    <div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div>
  </noscript>
<script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2dw/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"debug":false,"model":{"jsonPath":"/live2dw/assets/wanko.model.json"},"display":{"position":"left","width":150,"height":150,"hOffset":20,"vOffset":0},"mobile":{"show":false,"scale":0.5},"react":{"opacity":0.9},"log":false});</script></body>
</html>
